package com.test.application.linuxState;

import java.io.File;

//磁盘用量
public class DiskUsage {
    public static void main(String[] args) {
        // 获取所有磁盘分区列表
        File[] roots = File.listRoots();
        for (File file : roots) {
            // 获取磁盘分区的名称
            String drive = file.getAbsolutePath();
            // 获取磁盘分区的总容量
            long totalSpace = file.getTotalSpace();
            // 获取磁盘分区的可用空间
            long freeSpace = file.getFreeSpace();
            // 计算已使用的空间
            long usedSpace = totalSpace - freeSpace;
            // 输出信息
            System.out.println("Drive: " + drive);
            System.out.println("Total Space: " + formatBytes(totalSpace));
            System.out.println("Free Space: " + formatBytes(freeSpace));
            System.out.println("Used Space: " + formatBytes(usedSpace));
            System.out.println("--------------------");
        }
    }

    // 格式化字节大小
    private static String formatBytes(long bytes) {
        if (bytes >= 1024 * 1024 * 1024) {
            return String.format("%.2f GB", bytes / (1024.0 * 1024 * 1024));
        } else if (bytes >= 1024 * 1024) {
            return String.format("%.2f MB", bytes / (1024.0 * 1024));
        } else if (bytes >= 1024) {
            return String.format("%.2f KB", bytes / 1024.0);
        } else {
            return bytes + " B";
        }
    }
}